Design optimization

ABSTRACT

An apparatus, system, and method for optimization. The apparatus, system, and method include a mechanism for ending an optimization when all models within one design tolerance of an optimum model have been simulated.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims priority to U.S. patent application Ser.No. 10/231,338, filed Aug. 31, 2002, which is currently pending and isincorporated herein in its entirety.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH

Not Applicable.

FIELD OF THE INVENTION

The present invention is directed to an apparatus, a system, and amethod for creating one or more optimum solutions or designs. Inparticular, the present invention is applicable to a function that whenplotted has multiple peaks or valleys indicating that good solutionsexist in various solution regions. That function may represent theperformance of a device that can be simulated, such as an engine. Thepresent invention may employ design tolerances to reduce computing timeand to terminate the optimization process.

BACKGROUND OF THE INVENTION

Engine performance simulation software has become an integral part ofthe engine designer's toolkit. However, optimization of a particulardesign using such software is often difficult and time consuming. Thatis due primarily to the number of parameters required to adequatelycharacterize the engine and the interdependency of these parameters onone another. The present invention describes apparatuses, systems, andmethods that help to automate the engine design process and shorten thedevelopment time to meet specified performance goals.

SUMMARY OF THE INVENTION

The present invention is directed to a system, method and apparatus foroptimizing a design. In accordance with one form of the presentinvention, there is provided a method for finding an optimum model thatincludes specifying a base model that includes: (i) a variable having avalue, (ii) specifying a goal that identifies a characteristic of thebase model that is to be optimized, (iii) specifying a tolerance that isa minimum amount that the variable can be changed, (iv) specifying adelta that is initially set to a maximum amount that the variable can bechanged, (v) running the base model, (vi) identifying the current bestmodel to be the base model, (vii) creating a plus model by setting thevariable value to the current best model value plus the delta, (viii)running the plus model, (ix) creating a minus model by setting thevariable value to the current best model value minus the delta, (x)running the minus model, (xi) setting a previous best model to thecurrent best model and setting the current best model to the best of thecurrent best model, the plus model and the minus model, (xii) repeatingsteps (vii) through (xii) if the current best model is different thanthe previous best model, (xiii) reducing the delta, (xiv) repeatingsteps (vii) through (xiv) if the delta is greater than or equal to thetolerance, and (xv) identifying the current best model as the optimummodel.

The present invention is also directed to a system, method and apparatusfor terminating an optimization.

Accordingly, the present invention provides solutions to theshortcomings of prior optimization apparatuses, systems and methods.Those of ordinary skill in the art will readily appreciate, therefore,that those and other details, features, and advantages of the presentinvention will become further apparent in the following detaileddescription of the preferred embodiments of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated herein and constitutepart of this specification, include one or more embodiments of theinvention, and together with a general description given above and adetailed description given below, serve to disclose principles of theinvention in accordance with a best mode contemplated for carrying outthe invention.

FIG. 1 is a flow diagram of an optimization method of an embodiment ofthe present invention;

FIG. 2 is a surface contour produced by simulations wherein exhaust pipelength and diameter are optimized variables;

FIG. 3 is a flow diagram of a method of determining combined values inan embodiment of the present invention;

FIG. 4 is a flow diagram of a tolerance method in an embodiment of thepresent invention;

FIG. 5 is a flow diagram of a method of performing exploration in anembodiment of the present invention;

FIG. 6 is a flow diagram of a method of performing optimization in anembodiment of the present invention;

FIG. 7 a illustrates design configurations simulated in a solutions passoccurring for two variables independently in an embodiment of thepresent invention;

FIG. 7 b illustrates design configurations simulated in a solutions passoccurring for two variables in combination in an embodiment of thepresent invention;

FIG. 8 illustrates a simulation explorer pop-up menu in an embodiment ofthe present invention;

FIG. 9 is a screen that provides monitoring information duringoptimization in an embodiment of the present invention;

FIG. 10 is a distributed network utilized in an embodiment of thepresent invention;

FIG. 11 is a goal setting screen in an embodiment of the presentinvention;

FIG. 12 is a variable setting screen in an embodiment of the presentinvention;

FIG. 13 is a constraints setting screen in an embodiment of the presentinvention;

FIG. 14 is a solutions screen in an embodiment of the present invention;

FIG. 15 is a global screen in an embodiment of the present invention;

FIG. 16 is an optimization screen in an embodiment of the presentinvention; and

FIG. 17 is an advanced attribute screen in an embodiment of the presentinvention.

DETAILED DESCRIPTION OF THE INVENTION

Reference will now be made in detail to the preferred embodiments,examples of which are illustrated in the accompanying drawings. It is tobe understood that the Figures and descriptions of embodiments includedherein illustrate and describe elements that are of particularrelevance, while eliminating, for purposes of clarity, other elementsfound in typical computers and computer networks.

The present design optimization provides solutions to the shortcomingsof certain previous design methods and systems. Those of ordinary skillin the art will readily appreciate that while embodiments of the presentinvention are described in connection with engine design, aspects of theinvention are applicable beyond engine design. For example, theoptimization techniques disclosed and claimed herein may be applicableto optimizations for various purposes and statistical analyses ingeneral. The computational techniques disclosed and claimed herein maybe applicable to applications in which such distributed processing isbeneficial. The optimization techniques disclosed and claimed herein maybe utilized for purposes other than engine optimization. The userinterface described herein may also be applicable in a variety of usefulapplications. Thus, while certain embodiments of the present inventionare directed to engine design, the present invention and aspects thereofare recognized to be beneficial in a variety of applications. Otherdetails, features, and advantages of the design optimization will becomefurther apparent in the following detailed description of theembodiments.

Any reference in the specification to “one embodiment,” “a certainembodiment,” or a similar reference to an embodiment is intended toindicate that a particular feature, structure or characteristicdescribed in connection with the embodiment is included in at least oneembodiment of the invention. The appearances of such terms in variousplaces in the specification are not necessarily all referring to thesame embodiment. References to “or” are furthermore intended asinclusive so “or” may indicate one or the other ored terms or more thanone ored term.

While the present invention may be utilized to optimize a variety ofcomplex apparatuses and processes, the following embodiments aredirected to use of the present invention in optimizing an internalcombustion engine. Such an engine has many attributes that contribute tothe operation of the engine and many desirable goals. The attributes ofan internal combustion engine include, for example, valve quantity andsize, piston diameter and stroke, ignition timing, fuel deliveryquantity and timing, and exhaust pipe diameter and length. Goals foroperation of an internal combustion engine include, for example, fuelconsumption, emissions, torque, and power.

In the following description, the term “variable set” is utilized toindicate a set of variable values that may be utilized to run a singlesimulation. A “run” or “simulation” is an act of running a simulation ona variable set under given test conditions. A “test procedure” is a setof test conditions under which a run occurs. A “result” is the value ofcharacteristics or dependent variables from a simulation of a set ofvariables according to test conditions. The term “solution” refers toone or more runs utilized to evaluate goals. The term “pass” indicates acollection of solutions that is ranked to find the best variable set orsets. The term “optimum” is utilized to indicate a local optimum, whichis the best variable set from the ranked set of solutions of a pass. A“model” is a set of variables that may be simulated and a “designconfiguration” is a model embodying a design. It is a benefit of thepresent invention that it is capable of providing multiple, diverselocal optimums where such multiple, diverse optimum solutions exist.

A base model or a base design configuration is a starting definition ofattributes or components to be modified by rules to create an optimizeddesign. A “best model” is a model that most closely approximates one ormore specified values when the directive of the goal is to match thosevalues, a model that provides the highest resulting value when the goalis to maximize that value, and a model that provides the lowestresulting value when the goal is to minimize that value. The base designincludes all attributes necessary to simulate the design. Designattributes may be stored in a design attribute database. The designutilized in the examples herein is an engine design so that the basedesign configuration in those engine examples is referred to as a “baseengine.” Thus, those attributes may include dimensional data such as,for example, intake plenum dimensions, intake pipe length and diameter,exhaust pipe length and diameter, intake valve diameter, exhaust valvediameter, and cylinder length and diameter. Those attributes may alsoinclude other data such as, for example, sensed data including intakeair pressure, exhaust air pressure, and throttle position. Attributesmay furthermore be grouped logically by, for example, component suchthat an exhaust pipe length and an exhaust pipe diameter that arecommonly used in combination may be grouped to define an exhaust pipecomponent. Those components may then be assigned names such that all theattributes for a component are grouped under a unique engine componentname. The present optimization may then vary selected attributes andsimulate operation of an engine having those varying attributes toachieve one or more goals.

FIG. 1 illustrates a Design Optimization 100 of the present invention.In the embodiment illustrated in FIG. 1, the Design Optimization 100includes 2 phases of operation, Design and Execution. The Designincludes Specifying Goals 102, Specifying Variables 104, SpecifyingConstraints 106, Specifying Design of Experiments 108 and SpecifyingOptimizations 110. The Execution Phase includes Exploration 112 andSolution 114.

At 102, an objective that contains one or more goals of the optimizationis specified. The objective is a definition of the desired result ofoptimization. Goals may have at least three component parts: acharacteristic, a directive, and a value. Each characteristic is anentity that is to be optimized, such as for example a performancecharacteristic of an engine. The directive instructs as to what isdesired to be accomplished with the characteristic. For example, adirective may be an instruction to maximize the value of thecharacteristic, minimize the value of the characteristic, or match oneor more desired values of the characteristic. The value provides anobjective standard to compare the extent to which each designconfiguration approaches the desired result. In certain situations,goals that are minimized or maximized may not have an associated value,whereas goals that are to be matched typically would have at least oneassociated value.

The goal of the present example is the singular goal of achievingmaximum power through the range of engine operation specified in thetest procedure. Thus, the characteristic is power and the directive isto maximize that power.

The test procedure may, for example, specify a range of operation, astepwise increment through the range, a number of engine cycles tosimulate at each rpm step, a fuel utilized by the engine, a throttleposition, and ambient conditions. The range may be, for example, 5000rotations per minute (rpm) to 10,000 rpm and the increment may be 1000rpm steps throughout the range. The fuel may be, for example, gasolineor diesel. Ambient conditions include air temperature, air pressure, andhumidity at intake and exhaust points.

As has been mentioned, goals may be minimized, maximized, or matched toa desired value or a set of values. Where matching is desired, the valueassociated with the goal may be matched to, for example, a curve or setof values defining a curve. Goals may also be utilized as limits on thedesign. For example, a goal may be set with a high limit, a low limit,or a band having both high and low limits. Moreover, more than one goalmay be established for a simulation. Thus, for example, a user mayattempt to match a desired power curve while setting a particular highlimit on carbon monoxide in the exhaust of an engine. In that example,all results producing a carbon monoxide level greater than the limitwill be disregarded and the best fits to the power curve having a carbonmonoxide level below the limit will be provided as results.

The high limit is the specification of a value or set of values for aparameter above which a design configuration is unacceptable. A highlimit may, for example be placed on a parameter such as fuel consumptionto prevent a resulting design from being overly inefficient as to fuelconsumption. If the high limit is exceeded at any point, then thesimulation may be considered to have failed for that variable set.

The low limit is the specification of a value or set of values for aparameter below which a design configuration is unacceptable. A lowlimit may, for example be placed on a parameter such as power to preventa resulting design from having too little power. If a variable setproduces a value that is below the low limit at any point during thesimulation, then the simulation may be considered to have failed forthat variable set.

A limit band includes a high and low limit, such that if the high limitis exceeded for a set of variables at any point during the simulation orthe variable set produces a value that is below the low limit at anypoint during the simulation, then the simulation may be considered tohave failed for that variable set.

A failed variable set typically is not used in the ranking of variablesets to determine the best result.

A strategy is a process used to obtain an objective. A strategy includesone or more variables and may or may not contain one or moreconstraints.

At 104, the variables to be optimized are specified. “Optimized”variables are those variables that are to be varied in the optimizationsimulations in order to accomplish the goals. Two variables are to beoptimized in the embodiment described as an example herein: exhaust pipelength and exhaust pipe diameter. An initial value of each variable tobe optimized may be assigned. Boundaries of values for which thesimulation is to be run are then set. It has been determined for thepresent application that an exhaust pipe having a length of between 100mm and 1000 mm is desired to fit the vehicle that the engine isoperating. It has also been determined for the present application thatan exhaust pipe having a diameter of between 100 mm and 200 mm isdesired to fit the vehicle. Since only exhaust pipes having a lengthbetween 100 and 1000mm will be considered, the boundaries for exhaustpipe length are 100 mm and 1000 mm. Similarly, the boundaries forexhaust pipe diameter are 100 mm and 200 mm. Where each variablerepresents an axis of a grid, the area encompassed by the boundaries maybe viewed graphically and referred to as a “design space.”

The number of engines to be simulated may be limited, for practicalpurposes, by use of tolerances with variables or attributes that arepermitted to vary during optimization. A tolerance may be set at aminimum increment desired for a variable such that variable values to besimulated will be limited to values falling at tolerance points. Withoutuse of a tolerance, an infinite number of designs to be simulated wouldexist in any design space. By utilizing tolerances, infinitely smallsteps in the design space are eliminated and a finite number ofsimulations is forced to exist in a design space. When tolerances areused, variable values to be simulated are rounded to the nearesttolerance point so that values falling between those points are notsimulated. A design tolerance may be equal to a manufacturing tolerancebut may also be simply the amount of each step that a designer wishesthe optimization to consider. For example, it may be desired to considerexhaust pipes in lengths having 10 mm increments and diameters having 1mm increments. Thus, a tolerance for exhaust pipe length may be set at10 mm and a tolerance for exhaust pipe diameter may be set at 1 mm.Graphically, the bounded design space may now be viewed as a grid havingpoints located on every multiple of each tolerance. With regard totolerances, a global tolerance may be set that is based upon a functionof that variable such as the magnitude of the variable. Where desired,however, the tolerance for a variable may be set to any value.Tolerances may also be offset so that tolerance points may begin atother than zero or another multiple of the tolerance. Thus, for example,an exhaust pipe may be desired to be considered in 10 mm incrementsbeginning a 25 mm, thereby providing a tolerance offset. The exhaustpipe lengths to be considered would then be in 10 mm increments from 25mm (e.g., 25 mm, 35 mm, 45 mm, etc.).

Optimization having variables set at tolerances also provides a naturaltermination for the optimization program. Once all tolerance pointsaround a point from which optimization is occurring have been simulatedand do not yield a better value for the characteristic, the optimizationmay be terminated. Use of tolerance based simulation, furthermore,beneficially reduces the number of simulations run because variablevalues that are near each other are rounded to the same tolerance pointand simulation of the same point need not be performed twice. Rather,the present invention is capable of recognizing that a variable set tobe simulated is the same as a variable set previously simulated and sodoes not simulate that same variable set a second time.

At 106, constraints, including parametric equations, are specified. Aninitial design attribute may be defined as a constant value or by aparametric equation. Parametric equations are referred to herein as atype of constraint. A parametric equation defines an attribute in termsof one or more other attributes. An attribute that is defined by aparametric equation is not typically optimized. It may, however, changeas variables being optimized change. For example, the entrance diameterof a pipe may be defined as being equal to the diameter of a port towhich it connects. Alternately, a parametric equation could define thegeometry of a component, such as a parallel pipe, by equating the exitdiameter to the entrance diameter. Thus it is assured that onlyconfigurations in which inlet and outlet of the pipe are equal will beconsidered. As another example of a parametric equation, the stroke ofan engine may be based on the displacement and bore to stroke ratio ofthe engine.

In an embodiment of the present invention, variable sets for designconfigurations in the design space are simulated in two steps. The firststep, called exploration herein, simulates variable sets in variousregions of the design space and the second step, called optimizationherein, simulates design configurations in the most promising regions ofthe design space. In exploration, a small number of variable sets areselected to determine which region or regions in the design space aremost promising. Thus for example, three values for each variable may beselected so as to be dispersed evenly across a range of values to beconsidered for each variable. In optimization, design configurationsadjacent to the most promising design configurations explored inexploration are simulated to find optimum solutions in those regions.

At 108, attributes for a design of experiments are specified. The designof experiments attributes determine how many design configurations willbe simulated in exploration 112 and optimization 114. Design ofexperiments attributes include a number of levels to be explored foreach variable, the number of best runs desired for furtherconsideration, the number of other regions desired for furtherconsideration, and a number of runs limit. The level is a number ofvalues for each variable that are to be considered during exploration.Viewed graphically with each variable defining an axis on a graphbeginning with the lowest value to be considered and ending with thehighest value to be considered, levels are a number of points to besimulated on each axis in exploration 112. The number of solutions to besimulated for exploration 112 is, thus, the product of the number oflevels for each variable.

Global or local levels may be set for the variables when specifying thedesign of experiments 108. When global levels are assigned for allvariables, the same number of values are considered for each variable.For example, a global level of 3 may be provided by default. Where threevalues are selected for each value, the number of design configurationsthat will be considered in exploration is 3^(n), where n is equal to thenumber of variables in the design configuration.

When local levels are set for each variable, the number of values to beconsidered during exploration is selected individually for eachvariable. Furthermore, a global level may be provided as a default andoverriding local levels may be specified for one or more of thevariables being explored. A level of zero may also be specified suchthat exploration 112 is disabled for a variable. Alternately, values maybe specified by a user for consideration in exploration 112 or anothertechnique may be utilized to select the values to be used in exploration112.

A number of best runs may be specified to instruct optimization 114 asto how many design configurations are to be retained because they mostclosely approximate the goal. Those best design configurations often lieclose to each other in a single region. The best design configurationsmay, however, lie in disparate parts of the design space and may resultfrom optimizing more than one design configuration found in exploration112.

It may be desired that optimum design configurations in one or morelocal optimum regions of the design space (regions not containing thebest design configuration) be provided. For example, solutions in alocal optimum region may be close enough to the goal to satisfy adesigner and may be substantially more cost effective to implement.Thus, a number of other regions may be specified to provide so thatdesign configurations in local optimum regions are also provided byoptimization 114.

A number of runs limit may also be specified such that a limit is placedon the number of design configurations to be simulated. The number ofruns limit may be accomplished by randomly selecting designconfigurations to be simulated from the total number of designconfigurations that could be simulated. A random number seed may,furthermore be specified in a computer system so that the same designconfigurations may be simulated by choosing the same seed and differentdesign configurations may be simulated by selecting a different seed.

Optimizations are specified at 110. In optimization, adjacent designconfigurations are simulated by stepping from a base design simulationto adjacent design configurations to find optimum solutions in eachregion selected in exploration 112. In the optimization specificationphase, a determination of whether and how variables are to be combinedin optimization 114 is made. As has been explained hereinbefore,variables may be optimized individually or in combination. Steps may beapplied during optimization 114 as “individuals” where only onevariables is changed when simulating adjacent design configurations oras “combinations” where a combination of at least two variables arechanged when simulating adjacent design configurations. FIG. 7 aillustrates an example wherein variables are changed individually,creating four new design configurations to be simulated and FIG. 7 billustrates an example wherein variables are changed in combination,creating eight new design configurations to be simulated. As may be seenby that example, many more design configurations are presented forconsideration by the optimization system when parameters are consideredin combination than individually.

It may be noted that all variables may be combined or uncombined orsubsets of the variables may be combined in one or more combinations.

In addition, step and step delta start and end factors may be specified,a threshold may be specified, an optimization methodology may bespecified, and a limit on the number of runs for each pass of theoptimization may be specified. Step size is defined for each variable. Astep, in turn, defines an area on a grid, plus or minus from a basepoint, that will be considered in optimization. One useful step size isthe distance between exploration points, which causes optimization tooccur from a base point to each surrounding exploration point. Stepdelta start and end factors may be defined as percentages of the step orportions of the step. A step delta start factor defines the distancefrom a base point, as a portion of a step, at which the firstoptimization pass will occur. A step delta end factor defines thedistance from a base point, as a portion of a step, at which the lastoptimization pass will occur if the optimization is not terminated byother means. Moreover, one or more variables may be eliminated from theoptimization 114 because those variables were only necessary forexploration 112.

The step delta factors are used by the optimization to determine a newvalue for a variable set based on a portion of the distance between twoadjacent points on the exploration grid. The threshold is evaluated ateach pass to determine whether the optimization is complete. Theoptimization may thus terminate upon reaching a threshold or mayterminate prior to reaching a threshold for other reasons. For example,another reason that optimization may terminate is because designconfigurations for all tolerances in the design space surrounding thebase point have been simulated and no better result was found.

The optimization methodology for the present embodiment is based on asteepest decent analysis. Alternately, a downhill simplex or other formof analysis may be utilized. Downhill simplex does not allow anycombinations and may not perform ideally in combination with tolerances,since it depends upon small changes to keep it progressing.

A limit for the number of runs to be simulated in each pass may bespecified if such a limit is desired and a random number seed may bespecified in case the limit is exceeded.

During exploration 112, the design space is explored combining all thevariables based upon the levels of each variable or other specifiedvalues. A baseline simulation may be run initially. The baselinesimulation may be run for comparison to other simulated configurations.Thus, for example, an engine for a vehicle may be optimized for power byvarying exhaust pipe length and diameter. The simulation may utilizevalues from the baseline simulation that define a complete engine forall design configurations while varying values for exhaust pipe lengthand diameter only. Thus, if an engine to be optimized is currentlyutilizing an exhaust pipe that is 700 mm long and 150 mm in diameter,power may be determined for that configuration over a desired range ofengine speeds for the baseline simulation. The range of engine speedsfor this example will be 5000 to 10,000 rpm. The result of the baselinesimulation may then be compared to each other variation of exhaust pipelength and diameter examined during the optimization.

It is not necessary, however, to run a baseline simulation. Simulationresults may simply be ranked to determine which configurations of thevariables are best. Exploration 112 may calculate the result (in thepresent example engine power) at the various defined points within theboundaries set for the variables (in the present example exhaust pipelengths from 100 mm to 1000 mm and diameter from 100 mm to 200 mm).Those results may then ranked to determine which configurations of thevariables provide the best results.

FIG. 2 depicts a set of simulations of exhaust pipe length and diametergraphically. Power performance is depicted topographically on alandscape plane with the minimum exhaust pipe length of 100 mm set as aleft boundary, the maximum exhaust pipe length of 1000 mm set as a rightboundary, the minimum exhaust pipe diameter of 100 mm set as a lowerboundary and the maximum exhaust pipe diameter of 200 mm set as an upperboundary. In FIG. 2, exploration was performed in fine resolution todemonstrate an example of the values of the power contour in the designspace.

FIG. 3 illustrates a method of determining combined values 230 forexploration 112 of the present invention. The method 230 operatesvisually to create a two-dimensional grid corresponding to twovariables. It should be recognized, however, that the present inventionmay be utilized to optimize any number of variables. The range for eachvariable is equal to the maximum boundary value for that variable lessthe minimum boundary value for that variable. At 232, a counter “N” isset to 1. As will be seen at 252 and 254, that counter will beincremented until it reaches the level set for the first variable which,in the embodiment illustrated, is exhaust pipe length (“Len”). At 234, astep is calculated that divides the range for length into equalportions. A variable value for the first division of length iscalculated when 236 is first executed. Thus, graphically, the distanceon an X-axis from the minimum length into the length range for the firstdesign of experiments point is determined at 236. The distance on aY-axis from the minimum diameter to that first design of experimentspoint must next be determined to pinpoint the first design ofexperiments point. Thus, a nested loop for exhaust pipe diameter isentered at 238. At 238, a counter “M” is set to 1. As will be seen at248 and 250, that counter will be incremented until it reaches the levelset for the second variable which, in the embodiment illustrated, isexhaust pipe diameter (“Dia”). At 240, a step is calculated that dividesthe range for diameter into equal portions. A variable value for thefirst division of diameter is calculated when 242 is first executed.Thus, in the present embodiment that considers only two variables, theexhaust pipe length and exhaust pipe diameter of the first design ofexperiments point to be simulated is the intersection of the lengthresulting from step 236 and the diameter resulting from step 242.

In a certain embodiment wherein duplicate variable values may beproduced by the method described in FIG. 3, variable values to besimulated are stored in a database or table. After each iterationwherein a new set of variables to be used to run a simulation isdeveloped, the variable set is compared to the variable sets stored inthe database. Thus, if a variable set already exists in the database,the duplicate variable set may be discarded so as not to wastesimulation resources. Therefore, at 244, the length and diameterdetermined at 236 are 242 are compared to values previously calculatedand stored in a database. If the length and diameter values matchprevious values, the current values are not stored and the methodreturns to 248 to calculate the next design of experiments point. If,however, the length and diameter values do not match any saved in thedatabase, then the current design of experiments values are saved in thedatabase at 246 for future simulation.

At 248, if counter “M” is less than the level selected for secondvariable “diameter,” then counter “M” is incremented at 250 and theprocess returns to 242 to calculate the desired diameter value for thenext step. When counter “M” is equal to the level selected for secondvariable “diameter” then the process proceeds to 252. At 252, if counter“N” is less than the level selected for first variable “length,” thencounter “N” is incremented at 254 and the process returns to 236 tocalculate the desired length value for the next step. When counter “N”is equal to the level selected for first variable “length” then theprocess ends at 256.

It should be recognized that values calculated in the design ofexperiments value determination method 230 of FIG. 3 need not be savedin a database but may, for example, be simulated immediately after theyare calculated. The method described in connection with FIG. 3, however,beneficially eliminates duplicate simulation. It should also be notedthat when the loop for the first variable is incremented, it is notnecessary to recalculate the diameter points because the diameter valueswill match those calculated in the first pass. Thus a recursivealgorithm, may beneficially be employed to efficiently determine thedesign of experiments points to be simulated.

FIG. 4 depicts a tolerance method 130 that assures the value of avariable to be utilized in a particular run is within the desired rangeand of the desired magnitude to fall on a tolerance point. Where, as inthe present embodiment, there are multiple variables being considered ineach solution, the method of selecting the parameters for a variable 130will have to be performed once for each variable being considered. At132, a desired starting value is input into the tolerance method. At134-142 the tolerance method 130 assures that the input starting valueis not greater than the maximum boundary set for that variable and at144-152 the tolerance method 130 assures that the input starting valueis not less than the minimum boundary set for that variable.

At 134, the starting value is checked to determine whether it is greaterthan the maximum boundary for that variable. If the starting value isgreater than the maximum boundary set for that variable then thestarting value is given the value of the maximum boundary at 136. At138, the starting value is set equal to the integer of the startingvalue divided by the tolerance and that value is multiplied by thetolerance. A value other than an integer may alternately be specified at138. Thus, at 138 the starting value is always set at a multiple of thetolerance. As an example, if an exhaust pipe length of 1005 mm is input,the maximum length to be considered is 1000 mm, and the tolerance is 10mm, then the starting value will be set equal to the 1000 mm maximumlength at 136. The integer of (1000 mm/10 mm)*10 mm is 1000 mm. Thus itis confirmed that 1000 mm is a multiple of the tolerance of 10 mm.

Where a rounded integer function is used at 138 and a boundary is notset at a multiple of the tolerance, it is possible for the result of theequation of 138 to fall outside of the boundary. Therefore, at 140 and142, the method will subtract one tolerance from the starting value ifthe starting value is greater than the maximum boundary set.

At 144, the starting value is checked to determine whether it is lessthan the minimum boundary for that variable. If the starting value isless than the minimum boundary set for that variable then the startingvalue is given the value of the minimum boundary at 146. At 148, thestarting value is set equal to the integer of the starting value dividedby the tolerance and that value is multiplied by the tolerance. Thus, at148 the starting value is always set at a multiple of the tolerance. At150 and 152, the method will add one tolerance from the starting valueif the starting value is less than the minimum boundary set and at 154the tolerance method terminates.

During exploration 112 sets of values for the variables spread evenlywithin the boundaries may be generated and simulations run for each ofthose sets. In the present embodiment, all sets of values to be exploredare calculated first and then each simulation is run. A benefit to thatordering is that multiple simulations may be run simultaneously. Thatordering is particularly advantageous where the simulations areperformed on a network of computers wherein multiple processors areavailable to run simulations simultaneously. Simulations may, however,alternately be run as the variable values are determined.

FIG. 5 illustrates a method of performing exploration 112 of the presentinvention. At 202, values for variables at various design of experimentspoints within the boundaries are determined. Those points are typicallylocated grid-like between the boundaries set for each variable to arriveat a sampling of solutions across the entire range of values to beconsidered. At 204, a solution is run on each design of experimentspoint and a result for the goal is determined for each of those designof experiments points. At 206, the solutions are ranked with thesolution most closely approaching the goal ranked first and the solutionfarthest from the goal ranked last. The number of best solutions desiredare collected at 210. At 212, the best regional solutions are determinedby, for example, using a steepest climb analysis. The steepest climbanalysis includes (i) determine the steepest climb at each point, and(ii) create a collection of all points that did not climb toward anyadjacent point. A climb occurs where an adjacent point has a moredesirable result. The steepest climb occurs toward the point having themost desirable result of all adjacent points. At 218, any points thatwere determined to be best solutions at 210 are eliminated and the bestregional solutions are ranked. Next, at 218 a number of regional bestsolutions equal to the number of other regional solutions desired isselected.

If the number of runs created in exploration 112 exceeds the number ofruns limit, then variable sets are either selected or deselected untilthe number of simulations to be run is equal to the runs limit.Selection or de-selection may be based on a randomization. Moreover, therandomization may be seed based such that the results are repeatable ormodifiable as desired.

FIG. 6 illustrates optimization 114. The term “base point” will beutilized to describe a point from which a solution pass will occur.Optimization simulates design configurations adjacent to base points andselects the best design configuration. That best design configurationfor the pass is the design configuration that results in a value orvalues most nearly approximating the desired goal value or values. Thebest design configuration from a pass then becomes the base design forthe next optimization pass. If none of the generated designconfigurations in a pass improve on the base design configuration thendesign configurations in the design space nearer to the base design willbe simulated in the next pass. When a new base engine is selected forthe next pass, the process is termed “migration.” When the same baseengine is retained for the next pass and simulation of designconfigurations nearer that base design are performed, the process istermed “shrink.” Thus, in migration, the base engine is moved from onelocation on the grid to another so that additional engines may begenerated around that improved engine. In shrink, the base engine ismaintained in its current location and alternative engines nearer tothat base engine are generated.

Step size is based on the step delta specified during specification ofoptimization 110. The optimization may continue the process of migrationand shrink until a step delta end factor has been reached or designconfigurations for all tolerances adjacent to the base point have beensimulated and no better result of the characteristic was found. Thus,for example, the step delta start factor may be 64% of the step deltaand the step delta end factor may be 1% of the step delta. Designs may,thereby, be simulated 64% of the step from the base point initially,then 32% of the step from the base point, 16% of the step from the basepoint, 8% of the step from the base point, 4% of the step from the basepoint, 2% of the step from the base point, and 1% of the step from thebase point as shrinkage passes occur. As has previously been noted,during migration, engine designs from previous passes that overlap onthe current pass may not be selected for regeneration since they werepreviously generated.

The optimization begins at 302 by setting a shrink factor to the stepdelta start factor previously specified. It has been found throughexperimentation that a first pass having a shrink factor that is equalto 64% of the step size between exploration points is beneficial and soa 64% shrink factor will be used in the following example and thedistance between exploration points for each variable will be used asthe step size for each variable.

At 304, values for simulations propagating from the current base pointare determined. As may be seen in FIGS. 7 a and 7 b, each solution passmay be performed individually or in combination. FIG. 7 a illustrates asolutions pass occurring for length and diameter variables individually,while FIG. 7 b illustrates a solutions pass occurring for length anddiameter variables simultaneously. In the present two variable example,performing a solutions pass on the variables individually would causethe simulator to select additional values to be simulated that areadjacent to the base point at (i) the base point length value and thebase point diameter value plus 64% of an exploration step in thediameter direction, which may be referred to as a plus model fordiameter, (ii) the base point length value and the base point diametervalue minus 64% of an exploration step in the diameter direction, whichmay be referred to as a minus model for diameter, (iii) the base pointlength value plus 64% of an exploration step in the length direction andthe base point diameter value, which may be referred to as a plus modelfor length, and (iv) the base point length value minus 64% of anexploration step in the length direction and the base point diametervalue, which may be referred to as a minus model for length, as plottedon FIG. 7 a. In the present example, performing the solutions pass onthe variables in combination would cause the simulator to select theadditional values selected in an individual solutions pass andadditional values at, (i) the base point length value plus 64% of anexploration step in the length direction and the base point diametervalue plus 64% of an exploration step in the diameter direction,referred to as a plus-plus model, (ii) the base point length value plus64% of an exploration step in the length direction and the base pointdiameter value minus 64% of an exploration step in the diameterdirection, referred to as a plus-minus model, (iii) the base pointlength value minus 64% of an exploration step in the length directionand the base point diameter value plus 64% of an exploration step in thediameter direction, referred to as a minus-plus model, and (iv) the basepoint length value minus 64% of an exploration step in the lengthdirection and the base point diameter value minus 64% of an explorationstep in the diameter direction, referred to as a minus-minus model, asplotted on FIG. 7 b.

It is noted that where two or more variables are considered in asimulation, any two or more variables may be combined while othervariables are considered individually or separately in combination.Furthermore, the present invention contemplates dynamic combination ofvariables based on the degree of improvement in the result from the bestsolution of the previous pass. The dynamic combination could include,for example, any variable that changed in the best result of theprevious pass combined with other unchanged variables. Alternately, anyor all of the variables that changed in the best result of the previouspass may be combined. Moreover, any or all of the variables that changedin the last pass may be combined with any or all of the unchangedvariables. For example, each unchanged variable may be combined with acombination of any or all of the variables that changed in the previouspass.

At 306, the tolerance method illustrated in FIG. 4 is applied to allvariables.

As was previously discussed, variable sets that have been simulated maybe stored in a database and newly determined variable sets may becompared to those previously simulated variable sets so that duplicatevariable sets may be discarded and not simulated for a second time.Thus, at 308, the variable sets determined at 304 and 306 are comparedto variable sets already simulated and at 310 non-duplicative variablesets are saved to the database.

At 311, if the number of runs created in an optimization pass exceedsthe number of runs limit, then variable sets are either selected orde-selected until the number of simulations to be run is equal to theruns limit. Selection or de-selection may be based on a randomization.Moreover, the randomization may be seed based such that the results arerepeatable or modifiable as desired.

At 312, a determination is made as to whether any additional simulationsexist to be simulated around the current base point. Because the presentembodiment is tolerance based, as solutions passes are performed a timemay arise when all multiples of the tolerance around a base point havebeen explored. When all tolerance multiples around a base point havebeen explored, the solutions process will proceed to 322. If alltolerance multiples around a base point have not been explored thesolutions process will proceed to 314.

At 314, simulations are run on each variable value set in a pass, and at316 the latest simulation results are compared to previous simulationresults to find the best simulation result to that time.

At 318, a determination is made as to whether one of the results of thelast solutions pass is better than the previous best result and aregreater than the previous best result by more than the threshold. If oneof the results in the last solutions pass is the best result, then thebase point is reset to the new point having the best result at 320 andthe process returns to 304. If none of the results of the last solutionspass is the best result, the solutions process proceeds to 322. At 322,the current percentage is divided by two or some other factor and at 324a decision is made as to whether the current percentage is less than thestep delta end factor. If the current percentage is greater than orequal to the step delta end factor, the process returns to 304 to makeanother solutions pass at, for example, half the distance from the basepoint. If the current percentage is less than the step delta end factorthe optimization terminates at 326. Of course, terminating at apercentage of the step delta end factor is not necessary, but itbeneficially prevents simulations from continuing past a point where thebenefit derived from further simulation is minimal.

The optimization results may be normalized. For example, results may benormalized to account for differences in the magnitude of each goal.Thus a normalized result might be based on the percent of the averageresult. Results may also be weighted so that one goal is given a greaterweighting than another where goals are of varying importance.

One technique that may be used in connection with goals is referred toherein as “match design.” Match design is a specification of a set ofvalues, such as power or fuel consumption, for evaluating the results ofa simulation by computing the least squares fit to produce an errorvalue. Error values may furthermore be normalized, for example, toaccount for differences in the magnitude of the results for each goal.Thus a normalized error value might be based on the percent that theaverage results vary from a desired match. Error values may also beweighted such that one error value is given a greater weighting thananother where goals are of varying importance.

FIG. 8 illustrates a simulation explorer pop-up menu 350 depictingprocesses that can occur asynchronously during simulation. Functionsthat may be selected from the simulation explorer pop-up menu 350include hold 352, priority 354, mark done 356, and optimize status 358.

Hold 352 is a way for the user to temporarily pause the optimization.“Release” appears in place of “Hold” on the explorer pop-up menu 350when the optimization is currently on hold. Priority 354 is the methodfor changing which optimization will run if more than one optimizationis available to be processed.

Dynamic priority is an automatic process that the optimization uses todetermine its own priority in relation to other optimizations that maybe running concurrently. Dynamic priority could, for example, be thenegative of the number of runs created in a pass, thus giving higherpriority to a pass having a smaller amount of runs. Mark done 356provides a way for the user to abort the optimization.

Optimize status 358 produces monitoring information when selected. Forexample, selection of optimize status 358 may cause the display of FIG.9 to be displayed.

In a computer system or network of computer systems, simulations may runas a background task so as not to interfere with user activity. Whilethe optimization is occurring, monitoring information 400 may beinvoked. As illustrated in FIG. 9, such monitoring may include, forexample, a graphical display of goal progress by pass number 402,submitted runs by pass number 404, a graph of the results of the initialbest run and each better run by pass 406. Monitoring may also include asummary table 408 of the initial best run and each better run by passincluding the variable set for that run 408 and a detail table 410 ofevery run performed by the optimization and the respective variablesets.

History may be provided for a completed optimization or an optimizationin progress. The summary table 408 and detail table 410 are samples ofhistory that may be provided. That history can be exported, printed orshown as a graph.

The present invention may be performed by various methods including, forexample, manually or by a general purpose computer. A computer system420 for performing optimization on a distributed network is illustratedin FIG. 10. The network illustrated may include any number ofprocessors, memory, and storage devices. The processors may be, forexample, Pentium processors manufactured by Intel Corp. The processorsmay furthermore communicate one with another through communicationdevices coupled to a network, which may be, for example, a peer-to-peernetwork. Work to be performed by the network may be distributed by adatabase such as SQL Server database, produced by Microsoft Corp. Thepresent invention may also be embodied on a computer readable medium.

Utilizing the network, when a group of simulations are ready to beperformed, each simulation of a set of variables may be executed on aprocessor attached to the network. Each simulation may be placed in atable along with attributes such as, for example, what processor isperforming the simulation, what time the simulation was placed in thetable, whether the simulation has been completed, etc. Processors on thenetwork may then access the table and perform the simulations as thoseprocessors are available. The simulation itself may be represented by adefinition of a set of rules under which the simulation is to beperformed (e.g., a particular commercially available engine), thevariables to be optimized (e.g., exhaust pipe length and exhaust pipediameter), and the goal (e.g., maximization of power over a range of2000-10,000 rpm). In one embodiment, the processors are workstationsavailable on desktops to perform tasks required by a user at eachdesktop. Each workstation that is not employed in a higher priority taskby a user at its desktop, however, is available to perform one or moresimulations. Thus an existing network of individual computers mayperform their normal tasks and, when not employed in higher prioritytasks, may perform simulations in the background.

FIGS. 11 through 17 illustrate an embodiment of a system for specifyinga design. FIG. 11 illustrates a goals setting screen 500. The goalssetting screen includes a goal listing window 502 from which one or moreperformance characteristics may be selected and a selected goal window504 listing performance characteristics with their respectivedirectives.

FIG. 12 illustrates a variable setting screen 510. The variable settingscreen includes a variable selection window 512 containing a tree viewof available variables and a selected variable listing 514 windowlisting each selected variable and their associated attributes.

FIG. 13 illustrates a constraints setting screen 520 listing aconstraint in a set constraints window 522.

FIG. 14 illustrates a solution screen 530. The solution screen 530includes a best solutions dialog box 532 in which a number of bestsolutions (engines in the example shown) are entered, a local optimumsdialog box 534 in which a number of local optimums desired is entered, aseed dialog box 536 in which a seed for randomization may be entered, anexploration pass dialog box 538 in which the maximum number of designconfigurations in the exploration pass is entered, and a solution passdialog box 540 in which the maximum number of design configurations in asolution pass is entered.

FIG. 15 illustrates a global screen 550. The global screen 550 includesa default levels dialog box 552 in which the default number of levelsdesired may be entered. The global screen 550 also includes a pair ofdefault delta dialog boxes 554 into which may be entered a default deltafactor and a textual description of the formula used to compute thedefault delta. The default delta factor and formula determine thedefault delta. The default delta determines the default for the minimumand maximum values for every variable by adding and subtracting thedefault delta to the current value. The default delta in this example is0.5 times the current variable value. Thus, if the current variablevalue is 200, then the minimum is equal to 200 minus the default deltaof 100, or 100, and the maximum is equal to 200 plus the default deltaof 100, or 300.

A pair of default tolerance dialog boxes 556 are also included in theglobal screen 550. The default tolerance dialog boxes 556 provide spacesin which factors that are used to compute a default tolerance factor anda textual description of the formula used to compute default tolerancemay be entered. The default tolerance factor and formula determine thedefault tolerance for every variable. At 558, a textual description ofthe level is included. “Normal” in the context of the level textualdescription indicates a default level of 3. Thus, the default levelsdialog box 552 and the textual description of the level 558 are tiedsuch that a change in one will cause the other to change.

FIG. 16 illustrates an optimization screen 560. The optimization screenincludes an optimization process dialog box 562 in which the type ofoptimization desired is entered. At 564, a step delta starting factor isentered and at 566, a step delta ending factor is entered.

FIG. 17 illustrates an advanced attribute screen 570. That advancedattribute screen 570 includes an exploration process dialog box 572 thatallows the exploration to be a “full matrix” that includes the edges ofthe design space, an “inside matrix” that does not have any points onthe edge of the design space, or “no matrix” designates that noexploration will be performed. Also included in the advanced attributescreen 570 is a matrix width dialog box 574. A width of the matrix usedduring optimization may be entered in the matrix width dialog box 574. Atypical value for matrix width might be three variable values for eachvariable. Also included in the advanced attribute screen 570 is athreshold improvement rate dialog box 576. That threshold can be used toterminate an optimization prior to a normal termination that would occurdue to tolerances.

While the present invention has been disclosed with reference to certainembodiments, numerous modifications, alterations, and changes to thedescribed embodiments are possible without departing from the scope ofthe present invention, as defined in the appended claims. Accordingly,it is intended that the present invention not be limited to thedescribed embodiments, but that it have the full scope defined by thelanguage of the following claims, and equivalents thereof.

1. A computer readable medium containing instructions which, whenexecuted by a processor, cause the processor to: a. specify a model forperformance of a device that includes an input variable having atolerance and a step having an initial magnitude greater than thetolerance, and an output characteristic having an objective; b. simulatethe model with the input variable set to a selected value to arrive at aresulting output characteristic; c. simulate the model with the inputvariable set to the selected value changed by the step to arrive at asecond resulting output characteristic; d. select the input variablevalue that results in an output characteristic that more nearly conformsto the objective; e. reduce the step if the selected input variablevalue is unchanged at d; and f. repeat c through e until the stepreaches the tolerance.
 2. The computer readable medium of claim 1,wherein the step reaches the tolerance when the step first becomes lessthan the tolerance.
 3. The computer readable medium of claim 1, whereinthe step reaches the tolerance when the step is equal to the tolerance.4. The computer readable medium of claim 1, wherein the next reductionwould cause the step to be less than the tolerance.
 5. The computerreadable medium of claim 1, wherein the next reduction would cause thestep to be equal to the tolerance.
 6. The computer readable medium ofclaim 1, further comprising: running the model at the input variablevalue that results in an output characteristic that more nearly conformsto the objective plus one tolerance prior to terminating the method ifthe model was not previously run at the input variable value thatresults in an output characteristic that more nearly conforms to theobjective plus one tolerance; running the model at the input variablevalue that results in an output characteristic that more nearly conformsto the objective minus one tolerance prior to terminating the method ifthe model was not previously run at the input variable value thatresults in an output characteristic that more nearly conforms to theobjective minus one tolerance; and selecting one of the input variablevalue, the input variable value plus one tolerance, and the inputvariable value minus one tolerance that results in an outputcharacteristic that more nearly conforms to the objective.
 7. Thecomputer readable medium of claim 1, further comprising not changing thestep if the selected input variable value is changed at d.
 8. Thecomputer readable medium of claim 1, wherein the output characteristicthat more nearly conforms to the objective is the output characteristicthat most closely matches a predefined value of the objective.
 9. Thecomputer readable medium of claim 1, wherein the output characteristicthat more nearly conforms to the objective is the output characteristichaving the smallest value.
 10. The computer readable medium of claim 1,wherein changed by a step includes subtracting the step from theselected value.
 11. The computer readable medium of claim 1, whereinchanged by a step includes adding the step to the selected value. 12.The computer readable medium of claim 1, wherein running the model withthe input variable set to the selected value changed by the stepincludes running the model with the input variable set to the selectedvalue plus the step and running the model with the input variable set tothe selected value minus the step.
 13. The computer readable medium ofclaim 1, further comprising setting a minimum boundary for the variablebelow which optimization will not be performed.
 14. The computerreadable medium of claim 1, further comprising setting a maximumboundary for the variable above which optimization will not beperformed.
 15. The computer readable medium of claim 1, wherein themodel is a model of at least one of an apparatus, an apparatus relatedprocess, and a chemical process.
 16. The computer readable medium ofclaim 1, further comprising specifying at least a second input variablein the model, the second input variable having a second tolerance and asecond step and a second initial magnitude greater than the secondtolerance.
 17. A processor containing instructions that, when executedby the processor, cause the processor to: a. specify a model forperformance of a device that includes an input variable having atolerance, a step having an initial magnitude greater than thetolerance, and an output characteristic having an objective; b.simulating the model with the input variable set to a selected value toarrive at a resulting output characteristic; c. simulating the modelwith the input variable set to the selected value changed by the step toarrive at a second resulting output characteristic; d. select the inputvariable value that results in an output characteristic that more nearlyconforms to the objective; e. reduce the step if the selected inputvariable value is unchanged at d; and f. repeat c through e until thestep reaches the tolerance.
 18. The processor of claim 17, furthercomprising a storage device.
 19. The processor of claim 17, wherein atleast one of the variable value that results in the chosen outputcharacteristic value and the chosen output characteristic is stored inthe storage device.
 20. The processor of claim 17, wherein the storagedevice includes memory.
 21. The processor of claim 17, wherein theoutput characteristic that more nearly conforms to the objective is theoutput characteristic that most closely matches a predefined value ofthe objective.
 22. The processor of claim 17, wherein the model is amodel of at least one of an apparatus, an apparatus related process, anda chemical process.
 23. The processor of claim 17, further comprisingspecifying at least a second input variable in the model, the secondinput variable having a second tolerance and a second step and a secondinitial magnitude greater than the second tolerance.
 24. The processorof claim 17, wherein the input variable is a dimension of a component ofa machine and the model simulates the machine including that component.25. A computer readable medium containing instructions that, whenexecuted by a processor, cause the processor to: a. specify a base modelfor performance of a device that includes a variable having a value; b.specify a goal that identifies a characteristic of each model forperformance of a device that is optimized, the best model being themodel that produces the best result for the characteristic; c. specify atolerance that is a minimum amount that the variable can be changed; d.specify a delta that is initially set to a maximum amount that thevariable can be changed; e. simulate the base model to obtain a resultfor the base model; f. identify the current best model to be the basemodel; g. create a plus model by setting the variable value to thecurrent best model value plus the delta; h. simulate the plus model toobtain a result for the plus model; i. create a minus model by settingthe variable value to the current best model value minus the delta; j.simulate the minus model to obtain a result for the minus model; k.setting a previous best model to the current best model and setting thecurrent best model to one of the current best model, the plus model andthe minus model having the best result for the characteristic; l.repeating steps (g) through (l) if the current best model is differentthan the previous best model; m. reducing the delta; n. repeating steps(g) through (n) if the delta is greater than or equal to the tolerance;and o. identifying the current best model as the optimum model.
 26. Acomputer readable medium containing instructions that, when executed bya processor, cause the processor to: a. specify a base model thatincludes two variables, a first variable having a first value and asecond variable having a second value; b. specifying a goal whichidentifies a characteristic of the base model that is to be optimized;c. specifying a first tolerance that is a minimum amount that the firstvariable can be changed and a second tolerance that is a minimum amountthat the second variable can be changed; d. specifying a first deltathat is initially set to a maximum amount that the first variable can bechanged and a second delta that is initially set to a maximum amountthat the second variable can be changed; e. running the base model; f.identifying the current best model to be the base model; g. creating afirst plus model by setting the first variable value to the current bestmodel first value plus the first delta; h. running the first plus model;i. creating a first minus model by setting the first variable value tothe current best model first value minus the first delta; j. running thefirst minus model; k. creating a second plus model by setting the secondvariable value to the current best model second value plus the seconddelta; l. running the second plus model; m. creating a second minusmodel by setting the second variable value to the current best modelsecond value minus the second delta; n. running the second minus model;o. setting a previous best model to the current best model and settingthe current best model to the best of the current best model, the firstplus model, the first minus model, the second plus model and the secondminus model; p. repeating steps (g) through (p) if the current bestmodel is different than the previous best model; q. reducing the firstdelta and the second delta; r. repeating steps (g) through (r) if thefirst delta is greater than or equal to the first tolerance or if thesecond delta is greater than or equal to the second tolerance; and s.identifying the current best model as the optimum model.
 27. A computerreadable medium containing instructions that, when executed by aprocessor, cause the processor to: a. specify a base model that includestwo variables, a first variable having a first value and a secondvariable having a second value; b. specify a goal which identifies acharacteristic of the base model that is to be optimized; c. specify afirst tolerance that is a minimum amount that the first variable can bechanged and a second tolerance that is a minimum amount that the secondvariable can be changed; d. specify a first delta that is initially setto a maximum amount that the first variable can be changed and a seconddelta that is initially set to a maximum amount that the second variablecan be changed; e. running the base model; f. identifying the currentbest model to be the base model; g. creating a first plus model bysetting the first variable value to the current best model first valueplus the first delta; h. running the first plus model; i. creating afirst minus model by setting the first variable value to the currentbest model first value minus the first delta; j. running the first minusmodel; k. creating a second plus model by setting the second variablevalue to the current best model second value plus the second delta; l.running the second plus model; m. creating a second minus model bysetting the second variable value to the current best model second valueminus the second delta; n. running the second minus model; o. creating aplus-minus model by setting the first variable value to the current bestmodel first value plus the first delta and setting the second variablevalue to the current best model second value minus the second delta; p.running the plus-minus model; q. creating a minus-plus model by settingthe first variable value to the current best model first value minus thefirst and setting the second variable value to the current best modelsecond value plus the second delta; r. running the minus-plus model; s.creating a plus-plus model by setting the first variable value to thecurrent best model first value plus the first delta and setting thesecond variable value to the current best model second value plus thesecond delta; t. running the plus-plus model; u. creating a minus-minusmodel by setting the first variable value to the current best modelfirst value minus the first and setting the second variable value to thecurrent best model second value minus the second delta; v. running theminus-minus model; w. setting a previous best model to the current bestmodel and setting the current best model to the best of the current bestmodel, the first plus model, the first minus model, the second plusmodel, the second minus model, the plus-minus model, the minus-plusmodel, the plus-plus model and the minus-minus model; x. repeating steps(g) through (w) if the current best model is different than the previousbest model; y. reducing the first delta and the second delta; z.repeating steps (g) through (z) if the first delta is greater than orequal to the first tolerance or if the second delta is greater than orequal to the second tolerance; and aa. identifying the current bestmodel as the optimum model.